#ifndef HTTP_CLIENT_H
#define HTTP_CLIENT_H

#include <stddef.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

/// HTTP状态码枚举
typedef enum {
    HTTP_OK = 0,          ///< 请求成功
    HTTP_ERR_INIT,        ///< 初始化失败
    HTTP_ERR_PARAM,       ///< 参数错误
    HTTP_ERR_NETWORK,     ///< 网络错误（连接失败等）
    HTTP_ERR_TIMEOUT      ///< 请求超时
} HTTP_Status;

/// HTTP方法枚举
typedef enum {
    HTTP_GET,             ///< GET方法
    HTTP_POST,            ///< POST方法
    HTTP_PUT,             ///< PUT方法
    HTTP_DELETE           ///< DELETE方法
} HTTP_Method;

/// 响应回调函数类型
typedef size_t (*HTTP_ResponseCallback)(
    void* ptr,            ///< 接收到的数据块指针
    size_t size,          ///< 单个数据块的大小
    size_t nmemb,         ///< 数据块数量
    void* userdata        ///< 用户自定义上下文
);

/// HTTP请求配置结构体
typedef struct {
    HTTP_Method method;     ///< 请求方法
    const char* url;        ///< 目标URL
    const char** headers;   ///< 请求头数组（NULL终止）
    const char* request_body; ///< 请求体数据
    size_t body_size;       ///< 请求体长度（字节）
} HTTP_RequestConfig;

// 公开接口
bool HTTP_ClientInit(const char* ca_cert_path);
HTTP_Status HTTP_SendRequest(const HTTP_RequestConfig* config, 
                            HTTP_ResponseCallback callback, 
                            void* userdata);
void HTTP_ClientCleanup(void);
void HTTP_SetTimeout(unsigned int seconds);
unsigned int HTTP_GetCurrentTimeout(void);

#ifdef __cplusplus
}
#endif

#endif // HTTP_CLIENT_H